﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Septagon.TwochConnecter.Data.Responses
{
	public struct Res
	{
		/// <summary>
		/// 各パラメーターを初期化して<see cref="Res"/>構造体の新しいインスタンスを初期化します。
		/// </summary>
		/// <param name="ind">レス番号を表す<see cref="int"/></param>
		/// <param name="name">レスの名前欄を表す<see cref="string"/></param>
		/// <param name="mail">レスのメール欄を表す<see cref="string"/></param>
		/// <param name="sentense">レスの本文を表す<see cref="string"/></param>
		/// <param name="id">レスのIDを表す<see cref="string"/></param>
		/// <param name="date">レスの日付をあらわす<see cref="string"/></param>
		/// <param name="be">レスのBEを表す<see cref="string"/></param>
		/// <param name="vs">レス可視を表す<see cref="VisibleState"/></param>
		public Res(int ind, string name, string mail, string sentense, string id, string date, string be, VisibleState vs) : this()
		{
			this.Index = ind;
			this.Name = name;
			this.Mail = mail;
			this.Sentence = sentense;
			this.Id = id;
			this.Date = date;
			this.Be = be;
			this.ResVisible = vs;
		}
		/// <summary>
		/// このレスが可視可能かどうかの状態を取得または設定します。
		/// </summary>
		/// <returns></returns>
		public VisibleState ResVisible { get; set; }
		/// <summary>
		/// このレスの本文を取得または設定します。
		/// </summary>
		/// <returns></returns>
		public string Sentence { get; set; }
		/// <summary>
		/// このレスのメール欄を設定または取得します。
		/// </summary>
		/// <returns></returns>
		public string Mail { get; set; }
		/// <summary>
		/// このレスの名前欄を取得または設定します。
		/// </summary>
		/// <returns></returns>
		public string Name { get; set; }
		/// <summary>
		/// このレスの日付を取得または設定します。
		/// </summary>
		/// <returns></returns>
		public string Date { get; set; }
		/// <summary>
		/// このレスのIDを取得または設定します。
		/// </summary>
		/// <returns></returns>
		public string Id { get; set; }
		/// <summary>
		/// このレスのBEを取得または設定します。
		/// </summary>
		/// <returns></returns>
		public string Be { get; set; }
		/// <summary>
		/// このレスのレス番号を取得または設定します。
		/// </summary>
		/// <returns></returns>
		public int Index
		{
			get
			{
				return index;
			}
			set
			{
				if (value < 1)
				{
					throw new ArgumentException();
				}
				index = value;
			}
		}

		private int index;
	}
}
